In general, data is stored after being subjected to error correction coding in memory systems in order to protect the data to be stored. A product code that two-dimensionally generates a codeword has been known as an example of the error correction coding.